-- vim.keymap.set 太长，用map代替
local map =  vim.keymap.set
local opt = { noremap = true }
-- 插入模式返回普通模式 --
map("i","jk","<ESC>",opt)

-- 更好的上下移动:gj遇到自动折行,可以跳到而不是跳过被折叠的行
map({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, noremap = true, silent = true })
map({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, noremap = true, silent = true })

-- 视觉模式 --
-- 单行或多行移动
map("v", "J", ":m '>+1<CR>gv=gv'",{ noremap = true, silent = true })
map("v", "K", ":m '<-2<CR>gv=gv",{ noremap = true, silent = true })

-- 正常模式 --
-- 窗口
map("n", "<leader>sv", "<C-w>v",opt) -- 水平新增窗口 
map("n", "<leader>sh", "<C-w>s",opt) -- 垂直新增窗口

-- 切换到左侧分屏
map("n", "<leader>h", "<C-w>h",opt)
-- 切换到下侧分屏
map("n", "<leader>j", "<C-w>j",opt)
-- 切换到上侧分屏
map("n", "<leader>k", "<C-w>k",opt)
-- 切换到右侧分屏
map("n", "<leader>l", "<C-w>l",opt)


-- 取消高亮
map("n", "<leader>nh", ":nohl<CR>",opt)

-- 切换缓冲区
map("n", "<C-L>", ":bnext<CR>",opt)
map("n", "<C-H>", ":bprevious<CR>",opt)

--页面返回与前进
map("n", "<leader>[", "<C-d>",opt)
